perm filename PIX.SAI[PIX,HPM]8 blob
sn#126069 filedate 1974-10-19 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "PIX"
C00011 ENDMK
C⊗;
BEGIN "PIX"
REQUIRE "HELIB[1,3]" LIBRARY;
REQUIRE "DPYSUB.HDR[1,PDQ]" SOURCE_FILE;
REQUIRE "SOBMAT[SYS,HE]" LOAD_MODULE;
REQUIRE 2000 STRING_SPACE;
REQUIRE "⊂⊃||" DELIMITERS;
DEFINE α=⊂COMMENT⊃, EXT=⊂EXTERNAL⊃, INT=⊂INTEGER⊃, PRO=⊂PROCEDURE⊃,
CRLF=⊂'15&'12⊃, BHEAD(BUF)=⊂(BUF+1) LAND '777777⊃, REF=⊂REFERENCE⊃,
RED=⊂0⊃, BLUE=⊂1⊃, GREEN=⊂2⊃, CLEAR=⊂3⊃;
EXT PRO PICINI(INT CHAN, FILE, EXTEN, PPN;REF BOOLEAN FAIL;INT ARRAY STOR);
EXT PRO PICRD(REF BOOLEAN FAIL; INT ARRAY STOR);
EXT PRO PICWR(INT CHAN, FILE, EXTEN, PPN; REF BOOLEAN FAIL; INT ARRAY STOR);
EXT PRO RELCOR(INT IOWD);
EXT INT PRO GETCOR(INT SIZE);
EXT PRO INP;
EXT INT PRO GIOWD(INT ARRAY BUF);
EXT PRO EYECAL(INT SIZE, FRAM, FLAG; INT ARRAY BUF);
EXT PRO CWHEEL(INT CODE);
EXT PRO TVIN;
EXT PRO PRDUMP;
EXT PRO PORTR;
EXTERNAL PROCEDURE SPWON(INTEGER TIC;REFERENCE INTEGER ADDR);
EXTERNAL PROCEDURE CALLEN;
EXTERNAL PROCEDURE SPWOFF;
EXT INT TVWORD, FLINE, LLINE, RSIDE, LSIDE, TCLIP, BCLIP, PRTBUF,
L1, L2, L3, P1,P2,P3,STATUS,TSERVO,LENS,TVCAM,ERROR;
SAFE INT ARRAY PNTRS[1:25];
SAFE REAL ARRAY CAMERA_MODEL[1:10,1:3],PPOT0,PPOTD,TPOT0,TPOTD,FPOT0,FPOTD,
MART,SWING,FOC,FOCLEN0,FOCLENG[1:4],DP,P0[1:4,1:3],PP[1:4,1:2];
INT N, LIN, LINN, I, II, III, ANS, TVLENG, RFNAM, RFNUM, SEQNO;
REAL PANPOT, FOCPOT, TILPOT;
LABEL RUSE, LOOP, TKE, SKE;
STRING STR, INS;
PRELOAD_WITH "R","B","G"; STRING ARRAY CFIRST[1:3];
SAFE INTEGER ARRAY PICALLOC[1:3]; α allocation table for data blocks;
α first we initialize the world;
ERROR ← 1; α NEVER ERR OUT ON TVIN ERRORS ;
OUTSTR("TYPE ? FOR HELP"&CRLF);
SEQNO←0;
QUICK_CODE '051000000000 '10,0; END;
INS ← INCHWL;
CLRBUF;
WHILE LENGTH(INS) ≥ 2 ∧ INS[1 TO 1] ≠ ";" DO INS ← INS[2 TO ∞];
LIN ← IF INS[1 TO 1]=";" THEN CVO(INS[2 TO ∞]) ELSE '15;
LINN ← '401;
LOOP: TVCAM ← IF (LIN LAND 7) = 1 THEN 1 ELSE
IF (LIN LAND 7) = 2 THEN 2 ELSE
IF (LIN LAND 7) = 3 THEN 3 ELSE 0;
START_CODE
LABEL XX1,GOO;
JRST GOO;
XX1: '401000000000 LIN;
GOO: HRLZ 1,LINN;
IOR 1,XX1;
CALLI 1,'400070;
SKIP 0;
END;
TCLIP ← 1;
BCLIP ← 5;
PICALLOC[1] ← PICALLOC[2] ← PICALLOC[3] ← PNTRS[1] ← 0;
ARRBLT(PNTRS[2],PNTRS[1],24);
FLINE←'13;
LLINE←'373;
RSIDE←'450;
LSIDE←'13;
TVLENG ← ((RSIDE-LSIDE)/9+1)*(LLINE-FLINE+1);
PICALLOC[1] ← GETCOR(TVLENG);
IF TVCAM = 1 THEN
BEGIN
PICALLOC[2]←GETCOR(TVLENG);
PICALLOC[3]←GETCOR(TVLENG);
END;
IF (RFNUM ← RFNUM - 1)≥0 THEN
BEGIN
I←'40;
GO TO TKE;
END;
OUTSTR("*");
IF (I ← INCHRW) = '175 THEN
BEGIN
OUTSTR("CHANNEL=");
LIN←CVO(INCHWL);
IF LIN≥'40 THEN LIN←LIN LAND '17
ELSE LIN←1 LSH (35-LIN);
GO TO RUSE;
END ELSE
IF I = '12 THEN
BEGIN
OUTSTR("LINE=");
LINN←CVO(INCHWL);
GO TO RUSE;
END ELSE
IF I = "?" THEN
BEGIN
OUTSTR(CRLF&"THIS PROGRAM ALLOWS YOU TO SNAP DDVID
COMPATIBLE PICTURES FROM ANY VIDEO SOURCE
WITH A MINIMUM OF FUSS. THE DEFAULT SOURCE
(CHANNEL) IS THE TV RECIEVER IN THE LOUNGE
TYPE SPACE TO TAKE A PICTURE
TYPE A DIGIT FOR RAPID FIRE MODE
n FILES CALLED PIXn.mmm WILL BE PRODUCED
(n BEING YOUR DIGIT, AND mmm A SEQUENCE
NUMBER), ONE EVERY FEW SECONDS
FOR CHAN 51 (THE OLD HAND EYE CAMERA)
YOU MAY ALSO TYPE
C - TO TAKE A COLOR PICTURE (THREE FILES)
{R,G,B} - TO TAKE A FILTERED PICTURE
TYPE ALTMODE TO CHANGE CHANNEL
CHANNELS ARE:
47 - VIDEO SYNTHESIZER
51 - OLD (COHU) HAND EYE CAMERA
52 - NEW (SIERRA) HAND EYE CAMERA
53 - BAUMGART'S LINE (THE FONT CAMERA, MAYBE)
55 - LOUNGE TV RECEIVER
nn - ANY DD CHANNEL YOU CAN LOOK AT WITH <ESC>nnS
IF YOU DECIDE YOU DON'T WANT A PICTURE AFTER ALL
SIMPLY ANSWER THE 'FILE=' WITH A CARRIAGE RETURN,
OTHERWISE NAME A FILE FOR IT TO BE STORED ON
YOU MAY MONITOR THE PICTURE TAKING PROCESS AT
DD TERMINALS BY HITTING <ESC>54S. THE DIGITIZER
CURSOR WILL CAUSE THE IMAGE TO FLASH AS A FRAME
IS TAKEN"&CRLF);
CLRBUF;
GO TO RUSE;
END ELSE
IF I≥"0" ∧ I≤"9" THEN
BEGIN
RFNUM←(RFNAM←I)-"0";
GO TO RUSE;
END;
TKE: I ← IF I > '140 ∧ I < '173 THEN I - '40 ELSE I;
II ← IF I = '103 THEN RED ELSE
IF I = '102 THEN BLUE ELSE
IF I = '107 THEN GREEN ELSE
IF I = '122 THEN RED ELSE CLEAR;
III ← IF I = '103 ∧ TVCAM = 1 THEN GREEN ELSE II;
N ← 0;
FOR I ← II STEP 1 UNTIL III DO
BEGIN EXTERNAL INTEGER IND;
IF TVCAM = 1 THEN
BEGIN
CWHEEL(6);
IF IND ≠ I THEN
BEGIN INTEGER M;
CWHEEL(I);
M ← 12000;
WHILE M ← M - 1 DO;
END;
END;
TVWORD ← PICALLOC[N ← N + 1];
TVIN;
END;
BEGIN "DSKOUT"
INTEGER FILE, PPN, EXTEN, FAIL;
STRING FILOUT;
LABEL LOOP3;
LOOP3: IF RFNUM≥0 THEN
BEGIN
STR←"PIX"&RFNAM&"."&CVS(SEQNO←SEQNO+1);
GO TO SKE;
END;
OUTSTR("FILE=");
STR ← INCHWL;
SKE: IF LENGTH(STR)≠0 THEN
FOR I ← 1 STEP 1 UNTIL III-II+1 DO
BEGIN
PNTRS[1]←PICALLOC[I];
FILOUT←IF II=III THEN STR ELSE CFIRST[I]&STR;
FILE←CVFIL(FILOUT,EXTEN,PPN);
PICWR(1,FILE,EXTEN,PPN,FAIL,PNTRS);
IF FAIL THEN BEGIN USERERR(0,0,"WRITING OF FILE "
&FILOUT&" FAILED"); GO TO LOOP3;END;
OUTSTR("FILE "&FILOUT&" WRITTEN OUT"&CRLF);
END;
END "DSKOUT";
α return for next picture;
RUSE: FOR I ← 1 STEP 1 UNTIL 3 DO
BEGIN
IF PICALLOC[I] THEN RELCOR(PICALLOC[I]);
PICALLOC[I] ← PNTRS[I] ← 0;
END;
GO TO LOOP;
END;